package com.sky.service;

import com.sky.dto.*;
import com.sky.result.PageResult;
import com.sky.vo.OrderPaymentVO;
import com.sky.vo.OrderStatisticsVO;
import com.sky.vo.OrderSubmitVO;
import com.sky.vo.OrderVO;

public interface OrderService {
   OrderSubmitVO submitOrder(OrdersSubmitDTO ordersSubmitDTO) throws Exception;
   /**
    * 订单支付
    * @param ordersPaymentDTO
    * @return
    */
   OrderPaymentVO payment(OrdersPaymentDTO ordersPaymentDTO) throws Exception;

   /**
    * 支付成功，修改订单状态
    * @param outTradeNo
    */
   void paySuccess(String outTradeNo);

   OrderVO list(Long id);

   PageResult listHistoryOrders(int page, int pageSize, Integer status);

   void repetitionOrders(long id);

    void cancelOrder(long id) throws Exception;

   PageResult conditionSearchOrder(OrdersPageQueryDTO ordersPageQueryDTO);

    OrderStatisticsVO getStatistics();

   OrderVO getOrderDetail(long id);

   void confirmOrder(OrdersConfirmDTO ordersConfirmDTO);

   void rejectOrder(OrdersRejectionDTO ordersRejectionDTO) throws Exception;

   void deliverOrder(long id) throws Exception;

   void completeOrder(long id) throws Exception;

   void adminCancelOrder(OrdersCancelDTO ordersCancelDTO) throws Exception;

   void reminder(Long id);
}
